/**
 * @description 防抖 （保证函数在一定时间内只执行一次）
 * @param {Function} func 函数
 * @param {Number} wait 时间(单位毫秒)
 */
interface Debounce {
	(func: (...args: any[]) => void, wait: number): (...args: any[]) => void;
}

const debounce: Debounce = function (func, wait) {
	let timeout: NodeJS.Timeout | undefined;
	return function (this: any, ...args: any[]) {
		clearTimeout(timeout);
		timeout = setTimeout(() => func.apply(this, args), wait);
	};
};
export default debounce;
